import cv2 as cv
import numpy as np

# 改变颜色空间

flags = [i for i in dir(cv) if i.startswith('COLOR_')]
print("flag全部如下:")
print(flags)

# cv.cvtColor(input_image，flag)
# 其中flag确定转换类型。 对于BGR→Gray转换，我们使用标志cv.COLOR_BGR2GRAY。类似地，对于BGR→HSV，我们使用标志cv.COLOR_BGR2HSV
# 注意：对于HSV色彩空间，Hue(色调)的取值范围是[0,179]，Saturation(饱和度)的取值范围是[0,255]，Value(明度)的取值范围是[0,255]。
# 不同的软件可能使用不同的取值方式，因此，如果要将OpenCV的HSV值与其他软件的HSV值进行比较时，则需要对这些范围进行标准化。

cap = cv.VideoCapture(0)

while (1):
    r, frame = cap.read()

    hsv = cv.cvtColor(frame, cv.COLOR_BGR2HSV)

    h, s, v = cv.split(hsv)

    lower_blue = np.array([90, 50, 50])
    upper_blue = np.array([130, 255, 255])

    mask = cv.inRange(hsv, lower_blue, upper_blue)
    res = cv.bitwise_and(frame, frame, mask=mask)

    cv.imshow("frame", frame)
    cv.imshow("mask", mask)
    cv.imshow("res", res)
    k = cv.waitKey(5) & 0xFF
    if k == 27:
        break
cv.destroyAllWindows()
